package com.team.engine.basedao;

import java.util.List;


/**
 * 更新、插入、删除的dao操作基础接口
 * @author MengLH
 * @data 2010-7-6
 */
public interface UpdateDaoable<T, ID> {

	/**
	 * Hibernate批量处理时，每次提交的限制数
	 */
	public static final int hibernateJdbcBatchSize = 20;
	
	/**
	 * 插入，一条数据
	 * @param t 数据实体
	 * @return 主键
	 */
	ID insert(T t);
	
	/**
	 * 插入，多条数据
	 * @param t 数据实体集合
	 * @return 返回 0 为成功，1 为失败
	 */
	int insertBatch(final List<T> list);
	
	/**
	 * 更新，根据Id更新一条数据
	 * @param t 数据实体
	 * @return 返回 0 为成功，1 为失败
	 */
	int updateById(T t);
	
	/**
	 * 更新，根据Id更新多条数据
	 * @param t 数据实体集合
	 * @return 返回 0 为成功，1 为失败
	 */
	int updateBatchById(final List<T> list);
	
	/**
	 * 删除，根据Id删除一条数据
	 * @param id 条件值
	 * @return 返回 0 为成功，1 为失败
	 */
	int deleteById(ID id);
	
	/**
	 * 删除，根据数据实体删除一条数据
	 * @param t 数据实体
	 * @return 返回 0 为成功，1 为失败
	 */
	int delete(T t);
	
	/**
	 * 删除，根据数据实体集合删除多条数据
	 * @param list 数据实体集合
	 * @return 返回 0 为成功，1 为失败
	 */
	int deleteByList(List<T> list);
}
